# P418-P420
# 单例设计模式
# class MusicPlayer(object):
#
#     # 实例化的时候对实例方法进行处理
#     def __new__(cls, *args, **kwargs):
#         print("实例化动作")
#         # 按常理是自动创建内存空间的，但是我们调用了就不能自动了，我们手动直接获取基类的地址空间
#         instance = super().__new__(cls)
#         # 返回分配的地址
#         return instance
#
#     # 实例化的时候初始化
#     def __init__(self):
#         print("初始化")
#
#     def start_numsic(self):
#         print("播放音乐啦!")
#
# # 代码测试
# wangyi_player_object = MusicPlayer()
# wangyi_player_object1 = MusicPlayer()
# print(wangyi_player_object)
# print(wangyi_player_object1)

# P421
# 单例设计模式
class MusicPlayer(object):
    instance = None
    # 重写类的实例化，设计成单例模式
    def __new__(cls, *args, **kwargs):
        # 重构类的实例化，对于当前的实例就不用再做实例
        if cls.instance is None:
            cls.instance = super().__new__(cls)
        return cls.instance




music_player_one = MusicPlayer()
music_player_two = MusicPlayer()
print(music_player_one)
print(music_player_two)